<template>
   <div class="todo-footer">
    <label>
      <input v-model="isCheckedAll" type="checkbox" />
    </label>
    <span>
      <span>已完成{{ count }}</span> / 全部{{ todos.length }}
    </span>
    <button class="btn btn-danger" @click="clearAllCompletedTodos">清除已完成任务</button>
  </div>
</template>

<script lang="ts">
import {defineComponent,computed} from 'vue'
import {Todo} from '../types/todo'
export default defineComponent({
  name:"footer",
  props:{
    todos:{
      type:Array as ()=>Todo [],
      required:true
    },
    checkAll:{
      type:Function,
      required:true
    },
    clearAllCompletedTodos:{
      type:Function,
      required:true
    }
  },
  setup(props) {
    //已完成的计算属性操作
    const count = computed(()=>{
      return props.todos.reduce((pre,todo,index)=>pre+(todo.isCompleted?1:0),0)
    })
    //全选或全不选的计算属性操作
    const isCheckedAll =computed({
      get(){
         return count.value>0&&(count.value===props.todos.length)
      },
      set(val){
         props.checkAll(val)
      }
    })

    //不在子组件里写是因为子组件不能这样修改父组件里的数据
    // const clearAllCompletedTodos=()=>{
    //   console.log("11")
    //   props.todos=props.todos.filter(todo=>!todo.isCompleted)
    //   console.log(props.todos)
    // }

    return{
      count,
      isCheckedAll
      
    }
  }
})
</script>

<style scoped>
/*footer*/
.todo-footer {
  height: 40px;
  line-height: 40px;
  padding-left: 6px;
  margin-top: 5px;
}
.todo-footer label {
  display: inline-block;
  margin-right: 20px;
  cursor: pointer;
}
.todo-footer label input {
  position: relative;
  top: -1px;
  vertical-align: middle;
  margin-right: 5px;
}
.todo-footer button {
  float: right;
  margin-top: 5px;
}
</style>
